<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>mpt_ineq2eq</title>
<style type="text/css">
	body {background-color: white; color: black; font-family:sans-serif; font-size:medium;}
	a:link {color: #3300ff;}
	a:visited {color: #663399;}
	a:hover {color:#0099ff;}
	a:active {color: #0066cc;}
	a.button {text-decoration:none;}
	
	table.nav  {background-color: #dbddff;}
	table.body {margin-top:2ex; margin-bottom:2ex;}
	table.programlistingindent {margin-left:32px;}
	
	img { margin-bottom:0px; margin-top:0px;}
	tt {margin-left:0.5em; margin-right:0.5em; font-weight:lighter;}
	
	p {margin-top:0ex;}
	p.synopsis {margin-left:32px;}
	p.programlistingindent {margin-left:32px;}
	p.citetitle {margin-left:2em;}
	
	ul ul {list-style-type:square;}
	ul li p {margin-top:0ex; margin-bottom:.5ex; padding:0}
	ol li p {margin-top:0ex; margin-bottom:.5ex; padding:0}
	
	h1.reftitle {color:#a90000;}
	h1.reftitle {font-size:3.7ex; margin-top:0; margin-bottom:0; font-weight:bold}
	h1.title {color:black; font-size:4ex; margin-top:1ex; font-weight:bold}
	h2.title {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:3ex}
	h3.title {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:2.5ex}
	h4.title {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:2ex}
	h2 {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:2.5ex}
	h3 {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:2ex} 
	
	pre.programlisting {margin-left:32px;}
	pre.synopsis {margin-left:32px;}
	
	
	.categorytitle {margin-top:8px; padding-top:0px;}
	.categorylist {background-color: #e1e6f2;}
 	</style>
</head>
<body>
<a name="top_of_page"></a><p style="font-size:1px;"></p>
<h1 class="reftitle">mpt_ineq2eq</h1>
<h2>Purpose</h2>
<p>Detects inequality constraints which form equalities</p>
<h2>Syntax</h2>
<pre class="synopsis">[An, bn, Ae, be, ind_e] = mpt_ineq2eq(A, b, tol)</pre>
<h2>Description</h2>
<p></p>
        For a system of inequalities <img src="../../../fig/mpt/utils/mpt_ineq2eq1.png" alt="../../../fig/mpt/utils/mpt_ineq2eq1.png">, this function detects and returns those
         inequality constraints which form equalities. For instance:
         <tt> A = [1; -1; 1]; b = [1; -1; 2]; </tt>
         The output will lead:
         <tt> An = [-1]; bn = [2]; Ae = [1]; be = 1; </tt>
         such that the original problem can be rewritten as:
         <p class="programlistingindent"><img src="../../../fig/mpt/utils/mpt_ineq2eq15.png" alt="../../../fig/mpt/utils/mpt_ineq2eq15.png"></p>
         The algorithm works up to specified tolerance <tt>tol</tt>.
	<h2>Input Arguments</h2>
<table cellspacing="0" class="body" cellpadding="4" border="0" width="100%">
<colgroup>
<col width="31%">
<col width="69%">
</colgroup>
<tbody>
<tr valign="top">
<td><tt>A</tt></td>
<td>
<p></p>Matrix of inequality constraints in <img src="../../../fig/mpt/utils/mpt_ineq2eq2.png" alt="../../../fig/mpt/utils/mpt_ineq2eq2.png">
      <p>
	    		Class: <tt>double</tt></p>
</td>
</tr>
<tr valign="top">
<td><tt>b</tt></td>
<td>
<p></p>Right hand side of inequalities in <img src="../../../fig/mpt/utils/mpt_ineq2eq3.png" alt="../../../fig/mpt/utils/mpt_ineq2eq3.png">
      <p>
	    		Class: <tt>double</tt></p>
</td>
</tr>
<tr valign="top">
<td><tt>tol</tt></td>
<td>
<p></p>Working precision of the algorithm.<p>
	    		Class: <tt>double</tt></p>
<p>
	    		Default: MPTOPTIONS.abs_tol</p>
</td>
</tr>
</tbody>
</table>
<h2>Output Arguments</h2>
<table cellspacing="0" class="body" cellpadding="4" border="0" width="100%">
<colgroup>
<col width="31%">
<col width="69%">
</colgroup>
<tbody>
<tr valign="top">
<td><tt>An</tt></td>
<td>
<p></p>Matrix of new inequality constraints <img src="../../../fig/mpt/utils/mpt_ineq2eq4.png" alt="../../../fig/mpt/utils/mpt_ineq2eq4.png">
      <p>
	    		Class: <tt>double</tt></p>
</td>
</tr>
<tr valign="top">
<td><tt>bn</tt></td>
<td>
<p></p>Right hand side of new inequality constraints in <img src="../../../fig/mpt/utils/mpt_ineq2eq5.png" alt="../../../fig/mpt/utils/mpt_ineq2eq5.png">
      <p>
	    		Class: <tt>double</tt></p>
</td>
</tr>
<tr valign="top">
<td><tt>Ae</tt></td>
<td>
<p></p>Matrix of equality constraints <img src="../../../fig/mpt/utils/mpt_ineq2eq6.png" alt="../../../fig/mpt/utils/mpt_ineq2eq6.png">
      <p>
	    		Class: <tt>double</tt></p>
</td>
</tr>
<tr valign="top">
<td><tt>be</tt></td>
<td>
<p></p>Right hand side of equality constraints in <img src="../../../fig/mpt/utils/mpt_ineq2eq7.png" alt="../../../fig/mpt/utils/mpt_ineq2eq7.png">
      <p>
	    		Class: <tt>double</tt></p>
</td>
</tr>
<tr valign="top">
<td><tt>ind_e</tt></td>
<td>
<p></p>Rows of <img src="../../../fig/mpt/utils/mpt_ineq2eq8.png" alt="../../../fig/mpt/utils/mpt_ineq2eq8.png">, <img src="../../../fig/mpt/utils/mpt_ineq2eq9.png" alt="../../../fig/mpt/utils/mpt_ineq2eq9.png"> that create a pair of double sided inequalities, sorted in columns. <p>
	    		Class: <tt>double</tt></p>
</td>
</tr>
</tbody>
</table>
<h2>Example(s)</h2>
<h3>Example 
				1</h3>A system of inequalities <img src="../../../fig/mpt/utils/mpt_ineq2eq10.png" alt="../../../fig/mpt/utils/mpt_ineq2eq10.png">, <img src="../../../fig/mpt/utils/mpt_ineq2eq11.png" alt="../../../fig/mpt/utils/mpt_ineq2eq11.png">, <img src="../../../fig/mpt/utils/mpt_ineq2eq12.png" alt="../../../fig/mpt/utils/mpt_ineq2eq12.png"> contains one equality constraint 
               <img src="../../../fig/mpt/utils/mpt_ineq2eq13.png" alt="../../../fig/mpt/utils/mpt_ineq2eq13.png"> written as double-sided inequality.
         The corresponding matrix form of inequalities <img src="../../../fig/mpt/utils/mpt_ineq2eq14.png" alt="../../../fig/mpt/utils/mpt_ineq2eq14.png"> is built by <pre class="programlisting">A = [1; -1; 1];</pre>
<pre class="programlisting"></pre>
<pre class="programlisting">b = [1; -1; 2];</pre>
<pre class="programlisting"></pre> To detect the equality, we use <tt>mpt_ineq2eq</tt> function<pre class="programlisting">[An, bn, Ae, be] = mpt_ineq2eq(A,b)</pre>
<pre class="programlisting">
An =

     1


bn =

     2


Ae =

     1


be =

     1

</pre>
<h2>See Also</h2>
<a href="../modules/geometry/sets/@Polyhedron/polyhedron.html">polyhedron</a><p></p>
<table class="nav" summary="Navigation aid" border="0" width="100%" cellpadding="0" cellspacing="0"><tr valign="top">
<td align="left" width="20">
<a href="../../mpt.html" class="button">&#9664;</a>  </td>
<td align="left">mpt</td>
<td>  </td>
<td align="right">mpt_scale_matrix</td>
<td align="right" width="20"><a href="mpt_scale_matrix.html" class="button">&#9654;</a></td>
</tr></table>
<br><p>©  <b>2003-2013</b>     Michal Kvasnica: STU Bratislava,    <a href="mailto:michal.kvasnica@stuba.sk">michal.kvasnica@stuba.sk</a></p>
<p>©  <b>2006</b>     Johan Loefberg:  ETH Zurich ,    <a href="mailto:loefberg@control.ee.ethz.ch">loefberg@control.ee.ethz.ch</a></p>
</body>
</html>
